package com.bdqn.t382.config;

// 定义配置类

import com.bdqn.t382.entity.SysRole;
import com.bdqn.t382.entity.SysUser;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource(value = "classpath:user.properties", encoding = "UTF-8")
public class JavaConfig {
    // 使用@Value 注解可以读取配置文件中指定值
    @Value("${user.realName}")
    private String realName;
    @Value("${user.account}")
    private String account;
    @Value("${user.password}")
    private String password;
    @Value("${user.sex}")
    private int sex;

    // 定义 bean 对象
    @Bean
    // 也可以通过注解的 name 属性修改 bean 名称
    // @Bean(name="user1")
    public SysUser user(@Qualifier("adminRole") SysRole role) {
        SysUser user = new SysUser();
        // 使用@Value 读取到的属性进行赋值
        user.setRealName(realName);
        user.setAccount(account);
        user.setPassword(password);
        user.setSex(sex);

        user.setRole(role);
        // 返回对象会被注册到 Spring 容器中
        return user;
    }

    // 注册“管理员”角色 bean 对象
    @Bean
//    @Conditional(ConditionOnPropertyEnable.OnEnableCondition.class)
//    // 表示如果配置文件中 admin.enable=true 则需要此 Bean 对象，否则不需要
//    @ConditionOnPropertyEnable(enableProperty = "admin.enable")
    public SysRole adminRole() {
        SysRole role = new SysRole();
        role.setId(1L);
        role.setRoleName("管理员");
        role.setCode("ADMIN");
        return role;
    }

    // 注册“店长”角色 bean 对象
    @Bean
//    @Conditional(ConditionOnPropertyEnable.OnEnableCondition.class)
//    // 表示如果配置文件中 manager.enable=true 则需要此 Bean 对象，否则不需要
//    @ConditionOnPropertyEnable(enableProperty = "manager.enable")
    public SysRole managerRole() {
        SysRole role = new SysRole();
        role.setId(2L);
        role.setRoleName("店长");
        role.setCode("MANAGER");
        return role;
    }
}
